package com.cskaoyan.service;

import com.cskaoyan.bean.bo.*;
import com.cskaoyan.bean.pojo.MarketUser;
import com.cskaoyan.bean.vo.CartCheckedOutVO;
import com.cskaoyan.bean.vo.CartListVO;

import java.util.List;

public interface CartService {

    /**
     *
     * 描述:获取用户的购物车商品总数
     * 创建日期:2022/04/09 16:21
     * @param:
     * @return: java.lang.Integer
     * @author: HanWeiqi
     */
    Integer goodsCount(Integer id);

    /**
     *
     * 描述:根据用户id获取用户的购物车信息
     * 创建日期:2022/04/09 21:34
     * @param:  marketUser
     * @return: com.cskaoyan.bean.vo.CartListVO
     * @author: HanWeiqi
     */
    CartListVO cartIndex(MarketUser marketUser);

    /**
     *
     * 描述:添加商品至购物车
     * 创建日期:2022/04/09 22:25
     * @param:  cartAddBO
     * @param:  marketUser
     * @return: int
     * @author: HanWeiqi
     */
    int cartAdd(CartAddBO cartAddBO, MarketUser marketUser);

    /**
     *
     * 描述:根据规格id删除购物车中的数据，假删。并且将删除的数据返回出去
     * 创建日期:2022/04/09 23:23
     * @param:  productIds
     * @return: com.cskaoyan.bean.vo.CartListVO
     * @author: HanWeiqi
     */
    CartListVO cartDelete(CartDeleteBO cartDeleteBO, MarketUser marketUser);

    /**
     *
     * 描述:根据购物车id更新购物车数量，如果数量添加超过了库存，那么返回404。否则返回影响行数
     * 创建日期:2022/04/10 12:10
     * @param:  cartUpdateBO
     * @param:  marketUser
     * @return: int
     * @author: HanWeiqi
     */
    int cartUpdate(CartUpdateBO cartUpdateBO, MarketUser marketUser);

    /**
     *
     * 描述:购物车商品选中或取消
     * 创建日期:2022/04/10 21:20
     * @param:  cartCheckedBO
     * @param:  marketUser
     * @return: com.cskaoyan.bean.vo.CartListVO
     * @author: HanWeiqi
     */
    CartListVO cartChecked(CartCheckedBO cartCheckedBO, MarketUser marketUser);

    /**
     *
     * 描述:立即购买
     * 创建日期:2022/04/10 22:36
     * @param:  cartFastAddBO
     * @param:  marketUser
     * @return: java.lang.Integer
     * @author: HanWeiqi
     */
    Integer fastAdd(CartFastAddBO cartFastAddBO, MarketUser marketUser);

    /**
     *
     * 描述:确认订单
     * 创建日期:2022/04/11 8:43
     * @param:  cartCheckedBO
     * @param:  marketUser
     * @return: com.cskaoyan.bean.vo.CartCheckedOutVO
     * @author: HanWeiqi
     */
    CartCheckedOutVO checkedOut(CartCheckedoutBO checkedoutBO, MarketUser marketUser);
}
